﻿using System;

namespace Gencode.VECore.History
{
    /// <summary>
    /// Abstract base class for commands used for Undo - Redo 
    /// Subclasses contain enough information to make Undo and Redo operations for every specific command.
    /// Based on the Command Patern.
    /// </summary>
    public abstract class Command
    {
        /// <summary>
        /// This function is used to make Undo operation.
        /// It makes action opposite to the original command.
        /// </summary>
        /// <param name="list"></param>
        public abstract void Undo(ShapeList list);

        /// <summary>
        /// This command is used to make Redo operation.
        /// It makes original command again.
        /// </summary>
        /// <param name="list"></param>
        public abstract void Redo(ShapeList list);
    }
}
